#ifndef NODE_H
#define NODE_H

#include <map>
#include <string>

#include <boost/shared_ptr.hpp>

#include <Klein/Shader/API.h>
#include <Klein/Shader/Fragment.h>

class KLEIN_API Node
{
public:

	Node(const FragmentRef& fragment, const int number);
	~Node();

	int GetNumber() const;

	void SetLabel(const String& label);
	const String& GetLabel() const;

	void SetPosition(const int x, const int y);
	int GetPositionX() const;
	int GetPositionY() const;

	void Active(const bool active = true);
	bool GetActived() const;

	ParameterGroupRef GetParameterGroup() const;
	void SetParameter(const String& parameterName, const String& parameterValue);

private:

	int mNumber;

	String mLabel;

	int mPosition[2];

	bool mActived;

	ParameterGroupRef mParameterGroup;
};

typedef boost::shared_ptr<Node> NodeRef;

#endif
